package org.inspiration.dudu.web.service.user.impl;

import lombok.RequiredArgsConstructor;
import org.inspiration.dudu.user.model.dto.FavoriteFolderDTO;
import org.inspiration.dudu.user.model.vo.FavoriteFolderVO;
import org.inspiration.dudu.user.service.FavoriteFolderService;
import org.inspiration.dudu.web.service.user.FavoriteFolderFacadeService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 实现 FavoriteFolderFacadeService 接口，提供对用户收藏夹的操作服务。
 */
@Service
@RequiredArgsConstructor
public class FavoriteFolderFacadeServiceImpl implements FavoriteFolderFacadeService {

    private final FavoriteFolderService favoriteFolderService;

    /**
     * 创建一个新的收藏夹。
     *
     * @param favoriteFolderDTO 包含收藏夹信息的 DTO 对象
     */
    @Override
    public void createFavoriteFolder(FavoriteFolderDTO favoriteFolderDTO) {
        favoriteFolderService.createFavoriteFolder(favoriteFolderDTO);
    }

    /**
     * 删除指定的收藏夹。
     *
     * @param favoriteFolderDTO 包含要删除的收藏夹信息的 DTO 对象
     */
    @Override
    public void deleteFavoriteFolder(FavoriteFolderDTO favoriteFolderDTO) {
        // 删除收藏夹
        favoriteFolderService.deleteFavoriteFolder(favoriteFolderDTO);
        // TODO: 异步 对收藏关系表中每一个相关的收藏关系删除以及减少对应内容的收藏量
    }

    /**
     * 根据用户 ID 获取所有收藏夹。
     *
     * @param userId 用户的唯一标识
     * @return 用户的所有收藏夹列表
     */
    @Override
    public List<FavoriteFolderVO> getAllFavoriteFolders(Long userId) {
        return favoriteFolderService.getAllFavoriteFoldersByUserId(userId);
    }
}
